#什么是高阶函数和闭包并举例说明。
"""

高阶函数是指能够接受一个或多个函数作为参数，并且/或者返回一个函数的函数。
它们可以将函数作为数据进行操作，以实现更复杂的功能。
**接受一个或多个函数作为参数
**输出一个函数

"""
numbers = [1, 2, 3, 4, 5]

squared_numbers = list(map(lambda x: x**2, numbers))

print(squared_numbers)  # 输出：[1, 4, 9, 16, 25]


"""
闭包是指在一个函数内部定义的函数，并且内部函数可以访问外部函数的变量。闭包使得内部函数
可以"记住"外部函数的状态，并且在外部函数执行完毕后仍然可以访问这些状态。

"""
def counter():
    count = 0

    def increment():
        nonlocal count
        count += 1
        return count

    return increment

# 创建两个独立的计数器
counter1 = counter()
counter2 = counter()

print(counter1())  # 输出：1
print(counter1())  # 输出：2

print(counter2())  # 输出：1
print(counter2())  # 输出：2